home *** CD-ROM | disk | FTP | other *** search
/ Programming a Multiplayer FPS in DirectX / Programming a Multiplayer FPS in DirectX (Companion CD).iso / DirectX / dxsdk_oct2004.exe / dxsdk.exe / Utilities / MView / gxu / filestrm.cod < prev    next >
Encoding:
Text File  |  2004-09-30  |  26.9 KB  |  944 lines

  1. ; Listing generated by Microsoft (R) Optimizing Compiler Version 13.10.4035 
  2.  
  3.     TITLE    .\filestrm.cpp
  4.     .386P
  5. include listing.inc
  6. if @Version gt 510
  7. .model FLAT
  8. else
  9. _TEXT    SEGMENT PARA USE32 PUBLIC 'CODE'
  10. _TEXT    ENDS
  11. _DATA    SEGMENT DWORD USE32 PUBLIC 'DATA'
  12. _DATA    ENDS
  13. CONST    SEGMENT DWORD USE32 PUBLIC 'CONST'
  14. CONST    ENDS
  15. _BSS    SEGMENT DWORD USE32 PUBLIC 'BSS'
  16. _BSS    ENDS
  17. $$SYMBOLS    SEGMENT BYTE USE32 'DEBSYM'
  18. $$SYMBOLS    ENDS
  19. _TLS    SEGMENT DWORD USE32 PUBLIC 'TLS'
  20. _TLS    ENDS
  21. ;    COMDAT ?SetSize@CFileStream@@UAGJT_ULARGE_INTEGER@@@Z
  22. _TEXT    SEGMENT PARA USE32 PUBLIC 'CODE'
  23. _TEXT    ENDS
  24. ;    COMDAT ?CopyTo@CFileStream@@UAGJPAUIStream@@T_ULARGE_INTEGER@@PAT3@2@Z
  25. _TEXT    SEGMENT PARA USE32 PUBLIC 'CODE'
  26. _TEXT    ENDS
  27. ;    COMDAT ?Commit@CFileStream@@UAGJK@Z
  28. _TEXT    SEGMENT PARA USE32 PUBLIC 'CODE'
  29. _TEXT    ENDS
  30. ;    COMDAT ?Revert@CFileStream@@UAGJXZ
  31. _TEXT    SEGMENT PARA USE32 PUBLIC 'CODE'
  32. _TEXT    ENDS
  33. ;    COMDAT ?LockRegion@CFileStream@@UAGJT_ULARGE_INTEGER@@0K@Z
  34. _TEXT    SEGMENT PARA USE32 PUBLIC 'CODE'
  35. _TEXT    ENDS
  36. ;    COMDAT ?UnlockRegion@CFileStream@@UAGJT_ULARGE_INTEGER@@0K@Z
  37. _TEXT    SEGMENT PARA USE32 PUBLIC 'CODE'
  38. _TEXT    ENDS
  39. ;    COMDAT ?Clone@CFileStream@@UAGJPAPAUIStream@@@Z
  40. _TEXT    SEGMENT PARA USE32 PUBLIC 'CODE'
  41. _TEXT    ENDS
  42. ;    COMDAT ??0CFileStream@@QAE@PBDHHPAJ@Z
  43. _TEXT    SEGMENT PARA USE32 PUBLIC 'CODE'
  44. _TEXT    ENDS
  45. ;    COMDAT ??0IStream@@QAE@XZ
  46. _TEXT    SEGMENT PARA USE32 PUBLIC 'CODE'
  47. _TEXT    ENDS
  48. ;    COMDAT ??0ISequentialStream@@QAE@XZ
  49. _TEXT    SEGMENT PARA USE32 PUBLIC 'CODE'
  50. _TEXT    ENDS
  51. ;    COMDAT ??0IUnknown@@QAE@XZ
  52. _TEXT    SEGMENT PARA USE32 PUBLIC 'CODE'
  53. _TEXT    ENDS
  54. ;    COMDAT ??1CFileStream@@QAE@XZ
  55. _TEXT    SEGMENT PARA USE32 PUBLIC 'CODE'
  56. _TEXT    ENDS
  57. ;    COMDAT ?AddRef@CFileStream@@UAGKXZ
  58. _TEXT    SEGMENT PARA USE32 PUBLIC 'CODE'
  59. _TEXT    ENDS
  60. ;    COMDAT ?Release@CFileStream@@UAGKXZ
  61. _TEXT    SEGMENT PARA USE32 PUBLIC 'CODE'
  62. _TEXT    ENDS
  63. ;    COMDAT ??_GCFileStream@@QAEPAXI@Z
  64. _TEXT    SEGMENT PARA USE32 PUBLIC 'CODE'
  65. _TEXT    ENDS
  66. ;    COMDAT ?QueryInterface@CFileStream@@UAGJABU_GUID@@PAPAX@Z
  67. _TEXT    SEGMENT PARA USE32 PUBLIC 'CODE'
  68. _TEXT    ENDS
  69. ;    COMDAT ?Read@CFileStream@@UAGJPAXKPAK@Z
  70. _TEXT    SEGMENT PARA USE32 PUBLIC 'CODE'
  71. _TEXT    ENDS
  72. ;    COMDAT ?Write@CFileStream@@UAGJPBXKPAK@Z
  73. _TEXT    SEGMENT PARA USE32 PUBLIC 'CODE'
  74. _TEXT    ENDS
  75. ;    COMDAT ?Seek@CFileStream@@UAGJT_LARGE_INTEGER@@KPAT_ULARGE_INTEGER@@@Z
  76. _TEXT    SEGMENT PARA USE32 PUBLIC 'CODE'
  77. _TEXT    ENDS
  78. ;    COMDAT ?Stat@CFileStream@@UAGJPAUtagSTATSTG@@K@Z
  79. _TEXT    SEGMENT PARA USE32 PUBLIC 'CODE'
  80. _TEXT    ENDS
  81. ;    COMDAT _==
  82. _TEXT    SEGMENT PARA USE32 PUBLIC 'CODE'
  83. _TEXT    ENDS
  84. ;    COMDAT _IsEqualGUID
  85. _TEXT    SEGMENT PARA USE32 PUBLIC 'CODE'
  86. _TEXT    ENDS
  87. ;    COMDAT ??_7CFileStream@@6B@
  88. CONST    SEGMENT DWORD USE32 PUBLIC 'CONST'
  89. CONST    ENDS
  90. FLAT    GROUP _DATA, CONST, _BSS
  91.     ASSUME    CS: FLAT, DS: FLAT, SS: FLAT
  92. endif
  93.  
  94. INCLUDELIB LIBC
  95. INCLUDELIB OLDNAMES
  96.  
  97. PUBLIC    ??0IUnknown@@QAE@XZ                ; IUnknown::IUnknown
  98. ; Function compile flags: /Ogs
  99. ;    COMDAT ??0IUnknown@@QAE@XZ
  100. _TEXT    SEGMENT
  101. ??0IUnknown@@QAE@XZ PROC NEAR                ; IUnknown::IUnknown, COMDAT
  102. ; _this$ = ecx
  103.   00000    8b c1         mov     eax, ecx
  104.   00002    c3         ret     0
  105. ??0IUnknown@@QAE@XZ ENDP                ; IUnknown::IUnknown
  106. _TEXT    ENDS
  107. PUBLIC    ??1CFileStream@@QAE@XZ                ; CFileStream::~CFileStream
  108. PUBLIC    ?AddRef@CFileStream@@UAGKXZ            ; CFileStream::AddRef
  109. PUBLIC    ?Release@CFileStream@@UAGKXZ            ; CFileStream::Release
  110. PUBLIC    ?QueryInterface@CFileStream@@UAGJABU_GUID@@PAPAX@Z ; CFileStream::QueryInterface
  111. PUBLIC    ?Read@CFileStream@@UAGJPAXKPAK@Z        ; CFileStream::Read
  112. PUBLIC    ?Write@CFileStream@@UAGJPBXKPAK@Z        ; CFileStream::Write
  113. PUBLIC    ?Seek@CFileStream@@UAGJT_LARGE_INTEGER@@KPAT_ULARGE_INTEGER@@@Z ; CFileStream::Seek
  114. PUBLIC    ?Stat@CFileStream@@UAGJPAUtagSTATSTG@@K@Z    ; CFileStream::Stat
  115. PUBLIC    ?SetSize@CFileStream@@UAGJT_ULARGE_INTEGER@@@Z    ; CFileStream::SetSize
  116. PUBLIC    ?CopyTo@CFileStream@@UAGJPAUIStream@@T_ULARGE_INTEGER@@PAT3@2@Z ; CFileStream::CopyTo
  117. PUBLIC    ?Commit@CFileStream@@UAGJK@Z            ; CFileStream::Commit
  118. PUBLIC    ?Revert@CFileStream@@UAGJXZ            ; CFileStream::Revert
  119. PUBLIC    ?LockRegion@CFileStream@@UAGJT_ULARGE_INTEGER@@0K@Z ; CFileStream::LockRegion
  120. PUBLIC    ?UnlockRegion@CFileStream@@UAGJT_ULARGE_INTEGER@@0K@Z ; CFileStream::UnlockRegion
  121. PUBLIC    ?Clone@CFileStream@@UAGJPAPAUIStream@@@Z    ; CFileStream::Clone
  122. PUBLIC    ??_7CFileStream@@6B@                ; CFileStream::`vftable'
  123. EXTRN    __imp__CloseHandle@4:NEAR
  124. ;    COMDAT ??_7CFileStream@@6B@
  125. ; File d:\builds\nt32_fre\multimedia\directx\dxsdk\src\mview\gxu\filestrm.cpp
  126. CONST    SEGMENT
  127. ??_7CFileStream@@6B@ DD FLAT:?QueryInterface@CFileStream@@UAGJABU_GUID@@PAPAX@Z ; CFileStream::`vftable'
  128.     DD    FLAT:?AddRef@CFileStream@@UAGKXZ
  129.     DD    FLAT:?Release@CFileStream@@UAGKXZ
  130.     DD    FLAT:?Read@CFileStream@@UAGJPAXKPAK@Z
  131.     DD    FLAT:?Write@CFileStream@@UAGJPBXKPAK@Z
  132.     DD    FLAT:?Seek@CFileStream@@UAGJT_LARGE_INTEGER@@KPAT_ULARGE_INTEGER@@@Z
  133.     DD    FLAT:?SetSize@CFileStream@@UAGJT_ULARGE_INTEGER@@@Z
  134.     DD    FLAT:?CopyTo@CFileStream@@UAGJPAUIStream@@T_ULARGE_INTEGER@@PAT3@2@Z
  135.     DD    FLAT:?Commit@CFileStream@@UAGJK@Z
  136.     DD    FLAT:?Revert@CFileStream@@UAGJXZ
  137.     DD    FLAT:?LockRegion@CFileStream@@UAGJT_ULARGE_INTEGER@@0K@Z
  138.     DD    FLAT:?UnlockRegion@CFileStream@@UAGJT_ULARGE_INTEGER@@0K@Z
  139.     DD    FLAT:?Stat@CFileStream@@UAGJPAUtagSTATSTG@@K@Z
  140.     DD    FLAT:?Clone@CFileStream@@UAGJPAPAUIStream@@@Z
  141. ; Function compile flags: /Ogs
  142. CONST    ENDS
  143. ;    COMDAT ??1CFileStream@@QAE@XZ
  144. _TEXT    SEGMENT
  145. ??1CFileStream@@QAE@XZ PROC NEAR            ; CFileStream::~CFileStream, COMDAT
  146. ; _this$ = ecx
  147.  
  148. ; 38   :     CloseHandle(m_hfile);
  149.  
  150.   00000    ff 71 08     push     DWORD PTR [ecx+8]
  151.   00003    c7 01 00 00 00
  152.     00         mov     DWORD PTR [ecx], OFFSET FLAT:??_7CFileStream@@6B@
  153.   00009    ff 15 00 00 00
  154.     00         call     DWORD PTR __imp__CloseHandle@4
  155.  
  156. ; 39   : }
  157.  
  158.   0000f    c3         ret     0
  159. ??1CFileStream@@QAE@XZ ENDP                ; CFileStream::~CFileStream
  160. ; Function compile flags: /Ogs
  161. ; File d:\builds\nt32_fre\multimedia\directx\dxsdk\src\mview\gxu\filestrm.h
  162. _TEXT    ENDS
  163. ;    COMDAT ?SetSize@CFileStream@@UAGJT_ULARGE_INTEGER@@@Z
  164. _TEXT    SEGMENT
  165. _this$ = 8                        ; size = 4
  166. _libNewSize$ = 12                    ; size = 8
  167. ?SetSize@CFileStream@@UAGJT_ULARGE_INTEGER@@@Z PROC NEAR ; CFileStream::SetSize, COMDAT
  168.  
  169. ; 44   :     STDMETHODIMP SetSize(ULARGE_INTEGER libNewSize) {return E_NOTIMPL;}
  170.  
  171.   00000    b8 01 40 00 80     mov     eax, -2147467263    ; 80004001H
  172.   00005    c2 0c 00     ret     12            ; 0000000cH
  173. ?SetSize@CFileStream@@UAGJT_ULARGE_INTEGER@@@Z ENDP    ; CFileStream::SetSize
  174. ; Function compile flags: /Ogs
  175. _TEXT    ENDS
  176. ;    COMDAT ?CopyTo@CFileStream@@UAGJPAUIStream@@T_ULARGE_INTEGER@@PAT3@2@Z
  177. _TEXT    SEGMENT
  178. _this$ = 8                        ; size = 4
  179. _pstm$ = 12                        ; size = 4
  180. _cb$ = 16                        ; size = 8
  181. _pcbRead$ = 24                        ; size = 4
  182. _pcbWritten$ = 28                    ; size = 4
  183. ?CopyTo@CFileStream@@UAGJPAUIStream@@T_ULARGE_INTEGER@@PAT3@2@Z PROC NEAR ; CFileStream::CopyTo, COMDAT
  184.  
  185. ; 45   :     STDMETHODIMP CopyTo(IStream __RPC_FAR *pstm, ULARGE_INTEGER cb, ULARGE_INTEGER __RPC_FAR *pcbRead, ULARGE_INTEGER __RPC_FAR *pcbWritten) {return E_NOTIMPL;}
  186.  
  187.   00000    b8 01 40 00 80     mov     eax, -2147467263    ; 80004001H
  188.   00005    c2 18 00     ret     24            ; 00000018H
  189. ?CopyTo@CFileStream@@UAGJPAUIStream@@T_ULARGE_INTEGER@@PAT3@2@Z ENDP ; CFileStream::CopyTo
  190. ; Function compile flags: /Ogs
  191. _TEXT    ENDS
  192. ;    COMDAT ?Commit@CFileStream@@UAGJK@Z
  193. _TEXT    SEGMENT
  194. _this$ = 8                        ; size = 4
  195. _grfCommitFlags$ = 12                    ; size = 4
  196. ?Commit@CFileStream@@UAGJK@Z PROC NEAR            ; CFileStream::Commit, COMDAT
  197.  
  198. ; 46   :     STDMETHODIMP Commit(DWORD grfCommitFlags) {return E_NOTIMPL;}
  199.  
  200.   00000    b8 01 40 00 80     mov     eax, -2147467263    ; 80004001H
  201.   00005    c2 08 00     ret     8
  202. ?Commit@CFileStream@@UAGJK@Z ENDP            ; CFileStream::Commit
  203. ; Function compile flags: /Ogs
  204. _TEXT    ENDS
  205. ;    COMDAT ?Revert@CFileStream@@UAGJXZ
  206. _TEXT    SEGMENT
  207. _this$ = 8                        ; size = 4
  208. ?Revert@CFileStream@@UAGJXZ PROC NEAR            ; CFileStream::Revert, COMDAT
  209.  
  210. ; 47   :     STDMETHODIMP Revert(void) {return E_NOTIMPL;}
  211.  
  212.   00000    b8 01 40 00 80     mov     eax, -2147467263    ; 80004001H
  213.   00005    c2 04 00     ret     4
  214. ?Revert@CFileStream@@UAGJXZ ENDP            ; CFileStream::Revert
  215. ; Function compile flags: /Ogs
  216. _TEXT    ENDS
  217. ;    COMDAT ?LockRegion@CFileStream@@UAGJT_ULARGE_INTEGER@@0K@Z
  218. _TEXT    SEGMENT
  219. _this$ = 8                        ; size = 4
  220. _libOffset$ = 12                    ; size = 8
  221. _cb$ = 20                        ; size = 8
  222. _dwLockType$ = 28                    ; size = 4
  223. ?LockRegion@CFileStream@@UAGJT_ULARGE_INTEGER@@0K@Z PROC NEAR ; CFileStream::LockRegion, COMDAT
  224.  
  225. ; 48   :     STDMETHODIMP LockRegion(ULARGE_INTEGER libOffset, ULARGE_INTEGER cb, DWORD dwLockType) {return E_NOTIMPL;}
  226.  
  227.   00000    b8 01 40 00 80     mov     eax, -2147467263    ; 80004001H
  228.   00005    c2 18 00     ret     24            ; 00000018H
  229. ?LockRegion@CFileStream@@UAGJT_ULARGE_INTEGER@@0K@Z ENDP ; CFileStream::LockRegion
  230. ; Function compile flags: /Ogs
  231. _TEXT    ENDS
  232. ;    COMDAT ?UnlockRegion@CFileStream@@UAGJT_ULARGE_INTEGER@@0K@Z
  233. _TEXT    SEGMENT
  234. _this$ = 8                        ; size = 4
  235. _libOffset$ = 12                    ; size = 8
  236. _cb$ = 20                        ; size = 8
  237. _dwLockType$ = 28                    ; size = 4
  238. ?UnlockRegion@CFileStream@@UAGJT_ULARGE_INTEGER@@0K@Z PROC NEAR ; CFileStream::UnlockRegion, COMDAT
  239.  
  240. ; 49   :     STDMETHODIMP UnlockRegion(ULARGE_INTEGER libOffset, ULARGE_INTEGER cb, DWORD dwLockType) {return E_NOTIMPL;}
  241.  
  242.   00000    b8 01 40 00 80     mov     eax, -2147467263    ; 80004001H
  243.   00005    c2 18 00     ret     24            ; 00000018H
  244. ?UnlockRegion@CFileStream@@UAGJT_ULARGE_INTEGER@@0K@Z ENDP ; CFileStream::UnlockRegion
  245. ; Function compile flags: /Ogs
  246. _TEXT    ENDS
  247. ;    COMDAT ?Clone@CFileStream@@UAGJPAPAUIStream@@@Z
  248. _TEXT    SEGMENT
  249. _this$ = 8                        ; size = 4
  250. _ppstm$ = 12                        ; size = 4
  251. ?Clone@CFileStream@@UAGJPAPAUIStream@@@Z PROC NEAR    ; CFileStream::Clone, COMDAT
  252.  
  253. ; 50   :     STDMETHODIMP Clone(IStream __RPC_FAR *__RPC_FAR *ppstm) {return E_NOTIMPL;}
  254.  
  255.   00000    b8 01 40 00 80     mov     eax, -2147467263    ; 80004001H
  256.   00005    c2 08 00     ret     8
  257. ?Clone@CFileStream@@UAGJPAPAUIStream@@@Z ENDP        ; CFileStream::Clone
  258. ; Function compile flags: /Ogs
  259. ; File d:\builds\nt32_fre\multimedia\directx\dxsdk\src\mview\gxu\filestrm.cpp
  260. _TEXT    ENDS
  261. ;    COMDAT ?AddRef@CFileStream@@UAGKXZ
  262. _TEXT    SEGMENT
  263. _this$ = 8                        ; size = 4
  264. ?AddRef@CFileStream@@UAGKXZ PROC NEAR            ; CFileStream::AddRef, COMDAT
  265.  
  266. ; 44   : }
  267.  
  268.   00000    8b ff         npad     2
  269.  
  270. ; 42   : {
  271.  
  272.   00002    55         push     ebp
  273.   00003    8b ec         mov     ebp, esp
  274.  
  275. ; 43   :     return m_cRef++;    
  276.  
  277.   00005    8b 4d 08     mov     ecx, DWORD PTR _this$[ebp]
  278.   00008    8b 41 04     mov     eax, DWORD PTR [ecx+4]
  279.   0000b    8d 50 01     lea     edx, DWORD PTR [eax+1]
  280.   0000e    89 51 04     mov     DWORD PTR [ecx+4], edx
  281.  
  282. ; 44   : }
  283.  
  284.   00011    5d         pop     ebp
  285.   00012    c2 04 00     ret     4
  286. ?AddRef@CFileStream@@UAGKXZ ENDP            ; CFileStream::AddRef
  287. _TEXT    ENDS
  288. PUBLIC    _IsEqualGUID
  289. ; Function compile flags: /Ogs
  290. ; File d:\builds\nt32_fre\public\sdk\inc\guiddef.h
  291. ;    COMDAT _IsEqualGUID
  292. _TEXT    SEGMENT
  293. _rguid1$ = 8                        ; size = 4
  294. _rguid2$ = 12                        ; size = 4
  295. _IsEqualGUID PROC NEAR                    ; COMDAT
  296.  
  297. ; 162  : }
  298.  
  299.   00000    8b ff         npad     2
  300.  
  301. ; 160  : {
  302.  
  303.   00002    55         push     ebp
  304.   00003    8b ec         mov     ebp, esp
  305.   00005    56         push     esi
  306.  
  307. ; 161  :     return !memcmp(&rguid1, &rguid2, sizeof(GUID));
  308.  
  309.   00006    8b 75 08     mov     esi, DWORD PTR _rguid1$[ebp]
  310.   00009    57         push     edi
  311.   0000a    8b 7d 0c     mov     edi, DWORD PTR _rguid2$[ebp]
  312.   0000d    6a 04         push     4
  313.   0000f    59         pop     ecx
  314.   00010    33 c0         xor     eax, eax
  315.   00012    f3 a7         repe cmpsd
  316.   00014    5f         pop     edi
  317.   00015    0f 94 c0     sete     al
  318.   00018    5e         pop     esi
  319.  
  320. ; 162  : }
  321.  
  322.   00019    5d         pop     ebp
  323.   0001a    c3         ret     0
  324. _IsEqualGUID ENDP
  325. _TEXT    ENDS
  326. PUBLIC    ??_GCFileStream@@QAEPAXI@Z            ; CFileStream::`scalar deleting destructor'
  327. EXTRN    ??3@YAXPAX@Z:NEAR                ; operator delete
  328. ; Function compile flags: /Ogs
  329. ;    COMDAT ??_GCFileStream@@QAEPAXI@Z
  330. _TEXT    SEGMENT
  331. ___flags$ = 8                        ; size = 4
  332. ??_GCFileStream@@QAEPAXI@Z PROC NEAR            ; CFileStream::`scalar deleting destructor', COMDAT
  333. ; _this$ = ecx
  334.   00000    8b ff         npad     2
  335.   00002    55         push     ebp
  336.   00003    8b ec         mov     ebp, esp
  337.   00005    56         push     esi
  338.   00006    8b f1         mov     esi, ecx
  339.   00008    e8 00 00 00 00     call     ??1CFileStream@@QAE@XZ    ; CFileStream::~CFileStream
  340.   0000d    f6 45 08 01     test     BYTE PTR ___flags$[ebp], 1
  341.   00011    74 07         je     SHORT $L56330
  342.   00013    56         push     esi
  343.   00014    e8 00 00 00 00     call     ??3@YAXPAX@Z        ; operator delete
  344.   00019    59         pop     ecx
  345. $L56330:
  346.   0001a    8b c6         mov     eax, esi
  347.   0001c    5e         pop     esi
  348.   0001d    5d         pop     ebp
  349.   0001e    c2 04 00     ret     4
  350. ??_GCFileStream@@QAEPAXI@Z ENDP                ; CFileStream::`scalar deleting destructor'
  351. _TEXT    ENDS
  352. PUBLIC    _==
  353. ; Function compile flags: /Ogs
  354. ;    COMDAT _==
  355. _TEXT    SEGMENT
  356. _guidOne$ = 8                        ; size = 4
  357. _guidOther$ = 12                    ; size = 4
  358. _==    PROC NEAR                    ; COMDAT
  359.  
  360. ; 195  : }
  361.  
  362.   00000    8b ff         npad     2
  363.  
  364. ; 193  : {
  365.  
  366.   00002    55         push     ebp
  367.   00003    8b ec         mov     ebp, esp
  368.   00005    56         push     esi
  369.  
  370. ; 194  :     return IsEqualGUID(guidOne,guidOther);
  371.  
  372.   00006    8b 75 08     mov     esi, DWORD PTR _guidOne$[ebp]
  373.   00009    57         push     edi
  374.   0000a    8b 7d 0c     mov     edi, DWORD PTR _guidOther$[ebp]
  375.   0000d    6a 04         push     4
  376.   0000f    59         pop     ecx
  377.   00010    33 c0         xor     eax, eax
  378.   00012    f3 a7         repe cmpsd
  379.   00014    5f         pop     edi
  380.   00015    0f 94 c0     sete     al
  381.   00018    5e         pop     esi
  382.  
  383. ; 195  : }
  384.  
  385.   00019    5d         pop     ebp
  386.   0001a    c3         ret     0
  387. _==    ENDP
  388. _TEXT    ENDS
  389. EXTRN    _IID_IStream:BYTE
  390. EXTRN    _IID_IUnknown:BYTE
  391. ; Function compile flags: /Ogs
  392. ; File d:\builds\nt32_fre\multimedia\directx\dxsdk\src\mview\gxu\filestrm.cpp
  393. ;    COMDAT ?QueryInterface@CFileStream@@UAGJABU_GUID@@PAPAX@Z
  394. _TEXT    SEGMENT
  395. _this$ = 8                        ; size = 4
  396. _riid$ = 12                        ; size = 4
  397. _ppv$ = 16                        ; size = 4
  398. ?QueryInterface@CFileStream@@UAGJABU_GUID@@PAPAX@Z PROC NEAR ; CFileStream::QueryInterface, COMDAT
  399.  
  400. ; 67   : }
  401.  
  402.   00000    8b ff         npad     2
  403.  
  404. ; 57   : {    
  405.  
  406.   00002    55         push     ebp
  407.   00003    8b ec         mov     ebp, esp
  408.  
  409. ; 58   :     *ppv=NULL;
  410.  
  411.   00005    8b 45 10     mov     eax, DWORD PTR _ppv$[ebp]
  412.   00008    83 20 00     and     DWORD PTR [eax], 0
  413.   0000b    56         push     esi
  414.  
  415. ; 59   :     if (riid == IID_IUnknown)
  416.  
  417.   0000c    8b 75 0c     mov     esi, DWORD PTR _riid$[ebp]
  418.   0000f    57         push     edi
  419.   00010    6a 04         push     4
  420.   00012    59         pop     ecx
  421.   00013    bf 00 00 00 00     mov     edi, OFFSET FLAT:_IID_IUnknown
  422.   00018    33 d2         xor     edx, edx
  423.   0001a    f3 a7         repe cmpsd
  424.  
  425. ; 60   :         *ppv=(IUnknown*)this;
  426. ; 61   :     else if (riid == IID_IStream)
  427.  
  428.   0001c    74 11         je     SHORT $L56483
  429.   0001e    8b 75 0c     mov     esi, DWORD PTR _riid$[ebp]
  430.   00021    6a 04         push     4
  431.   00023    59         pop     ecx
  432.   00024    bf 00 00 00 00     mov     edi, OFFSET FLAT:_IID_IStream
  433.   00029    33 d2         xor     edx, edx
  434.   0002b    f3 a7         repe cmpsd
  435.   0002d    75 0f         jne     SHORT $L56339
  436. $L56483:
  437.  
  438. ; 62   :         *ppv=(IStream*)this;
  439.  
  440.   0002f    8b 4d 08     mov     ecx, DWORD PTR _this$[ebp]
  441.   00032    89 08         mov     DWORD PTR [eax], ecx
  442.  
  443. ; 65   :     ((LPUNKNOWN)*ppv)->AddRef();
  444.  
  445.   00034    8b 01         mov     eax, DWORD PTR [ecx]
  446.   00036    51         push     ecx
  447.   00037    ff 50 04     call     DWORD PTR [eax+4]
  448.  
  449. ; 66   :     return NOERROR;
  450.  
  451.   0003a    33 c0         xor     eax, eax
  452.   0003c    eb 05         jmp     SHORT $L56335
  453. $L56339:
  454.  
  455. ; 63   :     else
  456. ; 64   :         return E_NOINTERFACE;
  457.  
  458.   0003e    b8 02 40 00 80     mov     eax, -2147467262    ; 80004002H
  459. $L56335:
  460.   00043    5f         pop     edi
  461.   00044    5e         pop     esi
  462.  
  463. ; 67   : }
  464.  
  465.   00045    5d         pop     ebp
  466.   00046    c2 0c 00     ret     12            ; 0000000cH
  467. ?QueryInterface@CFileStream@@UAGJABU_GUID@@PAPAX@Z ENDP    ; CFileStream::QueryInterface
  468. _TEXT    ENDS
  469. EXTRN    __imp__ReadFile@20:NEAR
  470. ; Function compile flags: /Ogs
  471. ;    COMDAT ?Read@CFileStream@@UAGJPAXKPAK@Z
  472. _TEXT    SEGMENT
  473. _this$ = 8                        ; size = 4
  474. _pv$ = 12                        ; size = 4
  475. _read$ = 16                        ; size = 4
  476. _cb$ = 16                        ; size = 4
  477. _pcbRead$ = 20                        ; size = 4
  478. ?Read@CFileStream@@UAGJPAXKPAK@Z PROC NEAR        ; CFileStream::Read, COMDAT
  479.  
  480. ; 77   :         return S_OK;
  481. ; 78   :     else
  482. ; 79   :         return E_FAIL;
  483. ; 80   : }
  484.  
  485.   00000    8b ff         npad     2
  486.  
  487. ; 71   : {
  488.  
  489.   00002    55         push     ebp
  490.   00003    8b ec         mov     ebp, esp
  491.  
  492. ; 72   :     DWORD read;
  493. ; 73   :     BOOL result = ReadFile(m_hfile, pv, cb, &read, NULL);
  494.  
  495.   00005    6a 00         push     0
  496.   00007    8d 45 10     lea     eax, DWORD PTR _read$[ebp]
  497.   0000a    50         push     eax
  498.   0000b    ff 75 10     push     DWORD PTR _cb$[ebp]
  499.   0000e    8b 45 08     mov     eax, DWORD PTR _this$[ebp]
  500.   00011    ff 75 0c     push     DWORD PTR _pv$[ebp]
  501.   00014    ff 70 08     push     DWORD PTR [eax+8]
  502.   00017    ff 15 00 00 00
  503.     00         call     DWORD PTR __imp__ReadFile@20
  504.  
  505. ; 74   :     if (pcbRead)
  506.  
  507.   0001d    8b 4d 14     mov     ecx, DWORD PTR _pcbRead$[ebp]
  508.   00020    85 c9         test     ecx, ecx
  509.   00022    74 05         je     SHORT $L56352
  510.  
  511. ; 75   :         *pcbRead = read;
  512.  
  513.   00024    8b 55 10     mov     edx, DWORD PTR _read$[ebp]
  514.   00027    89 11         mov     DWORD PTR [ecx], edx
  515. $L56352:
  516.  
  517. ; 76   :     if (result)
  518.  
  519.   00029    f7 d8         neg     eax
  520.   0002b    1b c0         sbb     eax, eax
  521.   0002d    25 fb bf ff 7f     and     eax, 2147467259        ; 7fffbffbH
  522.   00032    05 05 40 00 80     add     eax, -2147467259    ; 80004005H
  523.  
  524. ; 77   :         return S_OK;
  525. ; 78   :     else
  526. ; 79   :         return E_FAIL;
  527. ; 80   : }
  528.  
  529.   00037    5d         pop     ebp
  530.   00038    c2 10 00     ret     16            ; 00000010H
  531. ?Read@CFileStream@@UAGJPAXKPAK@Z ENDP            ; CFileStream::Read
  532. _TEXT    ENDS
  533. EXTRN    __imp__WriteFile@20:NEAR
  534. ; Function compile flags: /Ogs
  535. ;    COMDAT ?Write@CFileStream@@UAGJPBXKPAK@Z
  536. _TEXT    SEGMENT
  537. _this$ = 8                        ; size = 4
  538. _pv$ = 12                        ; size = 4
  539. _written$ = 16                        ; size = 4
  540. _cb$ = 16                        ; size = 4
  541. _pcbWritten$ = 20                    ; size = 4
  542. ?Write@CFileStream@@UAGJPBXKPAK@Z PROC NEAR        ; CFileStream::Write, COMDAT
  543.  
  544. ; 90   :         return S_OK;
  545. ; 91   :     else
  546. ; 92   :         return E_FAIL;
  547. ; 93   : }
  548.  
  549.   00000    8b ff         npad     2
  550.  
  551. ; 84   : {
  552.  
  553.   00002    55         push     ebp
  554.   00003    8b ec         mov     ebp, esp
  555.  
  556. ; 85   :     DWORD written;
  557. ; 86   :     BOOL result = WriteFile(m_hfile, pv, cb, &written, NULL);
  558.  
  559.   00005    6a 00         push     0
  560.   00007    8d 45 10     lea     eax, DWORD PTR _written$[ebp]
  561.   0000a    50         push     eax
  562.   0000b    ff 75 10     push     DWORD PTR _cb$[ebp]
  563.   0000e    8b 45 08     mov     eax, DWORD PTR _this$[ebp]
  564.   00011    ff 75 0c     push     DWORD PTR _pv$[ebp]
  565.   00014    ff 70 08     push     DWORD PTR [eax+8]
  566.   00017    ff 15 00 00 00
  567.     00         call     DWORD PTR __imp__WriteFile@20
  568.  
  569. ; 87   :     if (pcbWritten)
  570.  
  571.   0001d    8b 4d 14     mov     ecx, DWORD PTR _pcbWritten$[ebp]
  572.   00020    85 c9         test     ecx, ecx
  573.   00022    74 05         je     SHORT $L56365
  574.  
  575. ; 88   :         *pcbWritten = written;
  576.  
  577.   00024    8b 55 10     mov     edx, DWORD PTR _written$[ebp]
  578.   00027    89 11         mov     DWORD PTR [ecx], edx
  579. $L56365:
  580.  
  581. ; 89   :     if (result)
  582.  
  583.   00029    f7 d8         neg     eax
  584.   0002b    1b c0         sbb     eax, eax
  585.   0002d    25 fb bf ff 7f     and     eax, 2147467259        ; 7fffbffbH
  586.   00032    05 05 40 00 80     add     eax, -2147467259    ; 80004005H
  587.  
  588. ; 90   :         return S_OK;
  589. ; 91   :     else
  590. ; 92   :         return E_FAIL;
  591. ; 93   : }
  592.  
  593.   00037    5d         pop     ebp
  594.   00038    c2 10 00     ret     16            ; 00000010H
  595. ?Write@CFileStream@@UAGJPBXKPAK@Z ENDP            ; CFileStream::Write
  596. _TEXT    ENDS
  597. EXTRN    __imp__SetFilePointer@16:NEAR
  598. ; Function compile flags: /Ogs
  599. ;    COMDAT ?Seek@CFileStream@@UAGJT_LARGE_INTEGER@@KPAT_ULARGE_INTEGER@@@Z
  600. _TEXT    SEGMENT
  601. _movehigh$ = -4                        ; size = 4
  602. _this$ = 8                        ; size = 4
  603. _dlibMove$ = 12                        ; size = 8
  604. _dwOrigin$ = 20                        ; size = 4
  605. _plibNewPosition$ = 24                    ; size = 4
  606. ?Seek@CFileStream@@UAGJT_LARGE_INTEGER@@KPAT_ULARGE_INTEGER@@@Z PROC NEAR ; CFileStream::Seek, COMDAT
  607.  
  608. ; 126  : }
  609.  
  610.   00000    8b ff         npad     2
  611.  
  612. ; 96   : {
  613.  
  614.   00002    55         push     ebp
  615.   00003    8b ec         mov     ebp, esp
  616.   00005    51         push     ecx
  617.  
  618. ; 97   :     LONG movelow;
  619. ; 98   :     LONG movehigh;
  620. ; 99   : 
  621. ; 100  :     movelow = dlibMove.LowPart;
  622. ; 101  :     movehigh = dlibMove.HighPart;
  623.  
  624.   00006    8b 45 10     mov     eax, DWORD PTR _dlibMove$[ebp+4]
  625.   00009    89 45 fc     mov     DWORD PTR _movehigh$[ebp], eax
  626.  
  627. ; 102  : 
  628. ; 103  :     DWORD moveMethod;
  629. ; 104  :     switch (dwOrigin)
  630.  
  631.   0000c    8b 45 14     mov     eax, DWORD PTR _dwOrigin$[ebp]
  632.   0000f    83 e8 00     sub     eax, 0
  633.   00012    74 17         je     SHORT $L56383
  634.   00014    48         dec     eax
  635.   00015    74 0f         je     SHORT $L56384
  636.   00017    48         dec     eax
  637.   00018    74 07         je     SHORT $L56385
  638.  
  639. ; 109  :     default: return E_INVALIDARG;
  640.  
  641.   0001a    b8 57 00 07 80     mov     eax, -2147024809    ; 80070057H
  642.   0001f    eb 3d         jmp     SHORT $L56391
  643. $L56385:
  644.  
  645. ; 108  :     case STREAM_SEEK_END: moveMethod = FILE_END; break;
  646.  
  647.   00021    6a 02         push     2
  648.   00023    58         pop     eax
  649.   00024    eb 07         jmp     SHORT $L56380
  650. $L56384:
  651.  
  652. ; 107  :     case STREAM_SEEK_CUR: moveMethod = FILE_CURRENT; break;
  653.  
  654.   00026    33 c0         xor     eax, eax
  655.   00028    40         inc     eax
  656.   00029    eb 02         jmp     SHORT $L56380
  657. $L56383:
  658.  
  659. ; 105  :     {
  660. ; 106  :     case STREAM_SEEK_SET: moveMethod = FILE_BEGIN; break;
  661.  
  662.   0002b    33 c0         xor     eax, eax
  663. $L56380:
  664.  
  665. ; 110  :     }
  666. ; 111  : 
  667. ; 112  : 
  668. ; 113  : 
  669. ; 114  :     DWORD result = SetFilePointer(m_hfile, movelow, &movehigh, moveMethod);
  670.  
  671.   0002d    50         push     eax
  672.   0002e    8d 45 fc     lea     eax, DWORD PTR _movehigh$[ebp]
  673.   00031    50         push     eax
  674.   00032    ff 75 0c     push     DWORD PTR _dlibMove$[ebp]
  675.   00035    8b 45 08     mov     eax, DWORD PTR _this$[ebp]
  676.   00038    ff 70 08     push     DWORD PTR [eax+8]
  677.   0003b    ff 15 00 00 00
  678.     00         call     DWORD PTR __imp__SetFilePointer@16
  679.  
  680. ; 115  : 
  681. ; 116  :     if (plibNewPosition)
  682.  
  683.   00041    8b 4d 18     mov     ecx, DWORD PTR _plibNewPosition$[ebp]
  684.   00044    85 c9         test     ecx, ecx
  685.   00046    74 08         je     SHORT $L56389
  686.  
  687. ; 117  :     {
  688. ; 118  :         plibNewPosition->LowPart = result;
  689. ; 119  :         plibNewPosition->HighPart = movehigh;
  690.  
  691.   00048    8b 55 fc     mov     edx, DWORD PTR _movehigh$[ebp]
  692.   0004b    89 01         mov     DWORD PTR [ecx], eax
  693.   0004d    89 51 04     mov     DWORD PTR [ecx+4], edx
  694. $L56389:
  695.  
  696. ; 120  :     }
  697. ; 121  : 
  698. ; 122  :     if (result != -1)
  699.  
  700.   00050    83 f8 ff     cmp     eax, -1
  701.   00053    74 04         je     SHORT $L56390
  702.  
  703. ; 123  :         return NOERROR;
  704.  
  705.   00055    33 c0         xor     eax, eax
  706.   00057    eb 05         jmp     SHORT $L56391
  707. $L56390:
  708.  
  709. ; 124  :     else
  710. ; 125  :         return E_FAIL;
  711.  
  712.   00059    b8 05 40 00 80     mov     eax, -2147467259    ; 80004005H
  713. $L56391:
  714.  
  715. ; 126  : }
  716.  
  717.   0005e    c9         leave
  718.   0005f    c2 14 00     ret     20            ; 00000014H
  719. ?Seek@CFileStream@@UAGJT_LARGE_INTEGER@@KPAT_ULARGE_INTEGER@@@Z ENDP ; CFileStream::Seek
  720. _TEXT    ENDS
  721. EXTRN    __imp__GetFileSize@8:NEAR
  722. ; Function compile flags: /Ogs
  723. ;    COMDAT ?Stat@CFileStream@@UAGJPAUtagSTATSTG@@K@Z
  724. _TEXT    SEGMENT
  725. _this$ = 8                        ; size = 4
  726. _pstatstg$ = 12                        ; size = 4
  727. _grfStatFlag$ = 16                    ; size = 4
  728. ?Stat@CFileStream@@UAGJPAUtagSTATSTG@@K@Z PROC NEAR    ; CFileStream::Stat, COMDAT
  729.  
  730. ; 139  : }
  731.  
  732.   00000    8b ff         npad     2
  733.  
  734. ; 130  : {
  735.  
  736.   00002    55         push     ebp
  737.   00003    8b ec         mov     ebp, esp
  738.   00005    56         push     esi
  739.  
  740. ; 131  :     memset(pstatstg, 0, sizeof(STATSTG));
  741.  
  742.   00006    8b 75 0c     mov     esi, DWORD PTR _pstatstg$[ebp]
  743.   00009    57         push     edi
  744.   0000a    6a 12         push     18            ; 00000012H
  745.   0000c    33 c0         xor     eax, eax
  746.   0000e    59         pop     ecx
  747.   0000f    8b fe         mov     edi, esi
  748.   00011    f3 ab         rep stosd
  749.  
  750. ; 132  : 
  751. ; 133  :     pstatstg->pwcsName = NULL; 
  752.  
  753.   00013    21 06         and     DWORD PTR [esi], eax
  754.  
  755. ; 134  :     pstatstg->type = STGTY_STREAM; 
  756. ; 135  : 
  757. ; 136  :     pstatstg->cbSize.LowPart = GetFileSize(m_hfile, &pstatstg->cbSize.HighPart); 
  758.  
  759.   00015    8d 46 0c     lea     eax, DWORD PTR [esi+12]
  760.   00018    50         push     eax
  761.   00019    8b 45 08     mov     eax, DWORD PTR _this$[ebp]
  762.   0001c    c7 46 04 02 00
  763.     00 00         mov     DWORD PTR [esi+4], 2
  764.   00023    ff 70 08     push     DWORD PTR [eax+8]
  765.   00026    ff 15 00 00 00
  766.     00         call     DWORD PTR __imp__GetFileSize@8
  767.   0002c    89 46 08     mov     DWORD PTR [esi+8], eax
  768.   0002f    5f         pop     edi
  769.  
  770. ; 137  : 
  771. ; 138  :     return S_OK;
  772.  
  773.   00030    33 c0         xor     eax, eax
  774.   00032    5e         pop     esi
  775.  
  776. ; 139  : }
  777.  
  778.   00033    5d         pop     ebp
  779.   00034    c2 0c 00     ret     12            ; 0000000cH
  780. ?Stat@CFileStream@@UAGJPAUtagSTATSTG@@K@Z ENDP        ; CFileStream::Stat
  781. _TEXT    ENDS
  782. PUBLIC    ??0ISequentialStream@@QAE@XZ            ; ISequentialStream::ISequentialStream
  783. ; Function compile flags: /Ogs
  784. ;    COMDAT ??0ISequentialStream@@QAE@XZ
  785. _TEXT    SEGMENT
  786. ??0ISequentialStream@@QAE@XZ PROC NEAR            ; ISequentialStream::ISequentialStream, COMDAT
  787. ; _this$ = ecx
  788.   00000    8b c1         mov     eax, ecx
  789.   00002    c3         ret     0
  790. ??0ISequentialStream@@QAE@XZ ENDP            ; ISequentialStream::ISequentialStream
  791. ; Function compile flags: /Ogs
  792. _TEXT    ENDS
  793. ;    COMDAT ?Release@CFileStream@@UAGKXZ
  794. _TEXT    SEGMENT
  795. _this$ = 8                        ; size = 4
  796. ?Release@CFileStream@@UAGKXZ PROC NEAR            ; CFileStream::Release, COMDAT
  797.  
  798. ; 53   : }
  799.  
  800.   00000    8b ff         npad     2
  801.  
  802. ; 47   : {
  803.  
  804.   00002    55         push     ebp
  805.   00003    8b ec         mov     ebp, esp
  806.  
  807. ; 48   :     if (--m_cRef != 0)    
  808.  
  809.   00005    8b 4d 08     mov     ecx, DWORD PTR _this$[ebp]
  810.   00008    ff 49 04     dec     DWORD PTR [ecx+4]
  811.   0000b    8b 41 04     mov     eax, DWORD PTR [ecx+4]
  812.  
  813. ; 49   :         return m_cRef;    
  814.  
  815.   0000e    75 09         jne     SHORT $L56323
  816.  
  817. ; 50   :     
  818. ; 51   :     delete this;
  819.  
  820.   00010    6a 01         push     1
  821.   00012    e8 00 00 00 00     call     ??_GCFileStream@@QAEPAXI@Z
  822.  
  823. ; 52   :     return 0;
  824.  
  825.   00017    33 c0         xor     eax, eax
  826. $L56323:
  827.  
  828. ; 53   : }
  829.  
  830.   00019    5d         pop     ebp
  831.   0001a    c2 04 00     ret     4
  832. ?Release@CFileStream@@UAGKXZ ENDP            ; CFileStream::Release
  833. _TEXT    ENDS
  834. PUBLIC    ??0IStream@@QAE@XZ                ; IStream::IStream
  835. ; Function compile flags: /Ogs
  836. ;    COMDAT ??0IStream@@QAE@XZ
  837. _TEXT    SEGMENT
  838. ??0IStream@@QAE@XZ PROC NEAR                ; IStream::IStream, COMDAT
  839. ; _this$ = ecx
  840.   00000    8b c1         mov     eax, ecx
  841.   00002    c3         ret     0
  842. ??0IStream@@QAE@XZ ENDP                    ; IStream::IStream
  843. _TEXT    ENDS
  844. PUBLIC    ??0CFileStream@@QAE@PBDHHPAJ@Z            ; CFileStream::CFileStream
  845. EXTRN    __imp__CreateFileA@28:NEAR
  846. EXTRN    __imp__GetLastError@0:NEAR
  847. ; Function compile flags: /Ogs
  848. ;    COMDAT ??0CFileStream@@QAE@PBDHHPAJ@Z
  849. _TEXT    SEGMENT
  850. _filename$ = 8                        ; size = 4
  851. _bRead$ = 12                        ; size = 4
  852. _bTruncate$ = 16                    ; size = 4
  853. _error$ = 20                        ; size = 4
  854. ??0CFileStream@@QAE@PBDHHPAJ@Z PROC NEAR        ; CFileStream::CFileStream, COMDAT
  855. ; _this$ = ecx
  856.  
  857. ; 34   : }
  858.  
  859.   00000    8b ff         npad     2
  860.  
  861. ; 21   : {
  862.  
  863.   00002    55         push     ebp
  864.   00003    8b ec         mov     ebp, esp
  865.  
  866. ; 22   :     m_hfile = CreateFile(filename, bRead ? GENERIC_READ : GENERIC_WRITE, 0, NULL, 
  867. ; 23   :                           (bTruncate ? CREATE_ALWAYS : OPEN_EXISTING), FILE_ATTRIBUTE_NORMAL,
  868. ; 24   :                           NULL);
  869.  
  870.   00005    8b 45 10     mov     eax, DWORD PTR _bTruncate$[ebp]
  871.   00008    53         push     ebx
  872.   00009    56         push     esi
  873.   0000a    8b f1         mov     esi, ecx
  874.   0000c    8b 4d 0c     mov     ecx, DWORD PTR _bRead$[ebp]
  875.   0000f    6a 00         push     0
  876.   00011    f7 d8         neg     eax
  877.   00013    1b c0         sbb     eax, eax
  878.   00015    68 80 00 00 00     push     128            ; 00000080H
  879.   0001a    83 c0 03     add     eax, 3
  880.   0001d    50         push     eax
  881.   0001e    f7 d9         neg     ecx
  882.   00020    1b c9         sbb     ecx, ecx
  883.   00022    b8 00 00 00 40     mov     eax, 1073741824        ; 40000000H
  884.   00027    6a 00         push     0
  885.   00029    23 c8         and     ecx, eax
  886.   0002b    6a 00         push     0
  887.   0002d    03 c8         add     ecx, eax
  888.   0002f    51         push     ecx
  889.   00030    ff 75 08     push     DWORD PTR _filename$[ebp]
  890.   00033    c7 06 00 00 00
  891.     00         mov     DWORD PTR [esi], OFFSET FLAT:??_7CFileStream@@6B@
  892.   00039    ff 15 00 00 00
  893.     00         call     DWORD PTR __imp__CreateFileA@28
  894.  
  895. ; 25   :     if (error)
  896.  
  897.   0003f    8b 5d 14     mov     ebx, DWORD PTR _error$[ebp]
  898.   00042    85 db         test     ebx, ebx
  899.   00044    89 46 08     mov     DWORD PTR [esi+8], eax
  900.   00047    74 17         je     SHORT $L56306
  901.  
  902. ; 26   :     {
  903. ; 27   :         ULONG foo = GetLastError();
  904.  
  905.   00049    ff 15 00 00 00
  906.     00         call     DWORD PTR __imp__GetLastError@0
  907.  
  908. ; 28   :         if (m_hfile == INVALID_HANDLE_VALUE)
  909.  
  910.   0004f    83 7e 08 ff     cmp     DWORD PTR [esi+8], -1
  911.   00053    75 08         jne     SHORT $L56304
  912.  
  913. ; 29   :             *error = E_FAIL;
  914.  
  915.   00055    c7 03 05 40 00
  916.     80         mov     DWORD PTR [ebx], -2147467259 ; 80004005H
  917.  
  918. ; 30   :         else
  919.  
  920.   0005b    eb 03         jmp     SHORT $L56306
  921. $L56304:
  922.  
  923. ; 31   :             *error = NOERROR;
  924.  
  925.   0005d    83 23 00     and     DWORD PTR [ebx], 0
  926. $L56306:
  927.  
  928. ; 32   :     }
  929. ; 33   :     m_cRef = 1;
  930.  
  931.   00060    c7 46 04 01 00
  932.     00 00         mov     DWORD PTR [esi+4], 1
  933.  
  934. ; 34   : }
  935.  
  936.   00067    8b c6         mov     eax, esi
  937.   00069    5e         pop     esi
  938.   0006a    5b         pop     ebx
  939.   0006b    5d         pop     ebp
  940.   0006c    c2 10 00     ret     16            ; 00000010H
  941. ??0CFileStream@@QAE@PBDHHPAJ@Z ENDP            ; CFileStream::CFileStream
  942. _TEXT    ENDS
  943. END
  944.